It may be advantageous to allow both hardware and software of a system to store data in an address translation cache (e.g., while handling a cache miss). An address cache miss can occur when an I/O device does an access to memory and the associated address is not already in the address cache. When an address cache miss occurs, address translation hardware will fetch from memory the associated address translation information for the new address and must replace an old entry in the address cache with the new data. However, because conventional systems are unable to prevent hardware from overwriting data stored in the cache by software, and vice versa, conventional systems generally are adapted to store data in the cache using only one of hardware or software. Consequently, improved methods and apparatus for handling a cache miss are desired.